package com.mercury.ec.module.air.controller.admin.demandorder.vo.demandroute;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.mercury.ec.framework.excel.core.annotations.DictFormat;
import com.mercury.ec.framework.excel.core.convert.DictConvert;
import com.mercury.ec.module.air.controller.admin.demandorder.vo.demandprice.AirDemandPriceRespVO;
import com.mercury.ec.module.air.controller.admin.demandorder.vo.demandroutesegment.AirDemandRouteSegmentRespVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

@Schema(description = "管理后台 - 机票需求订单方案行程 Response VO")
@Data
@ExcelIgnoreUnannotated
public class AirDemandRouteRespVO {

    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27529")
    private Long id;

    @Schema(description = "需求订单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "24503")
    private Long demandId;

    @Schema(description = "方案id", requiredMode = Schema.RequiredMode.REQUIRED, example = "2103")
    private Long demandSchemeId;

    @Schema(description = "序号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("序号")
    private Integer serialNo;

    @Schema(description = "pnr内容", example = "随便")
    @ExcelProperty("pnr内容")
    private String pnrContent;

    @Schema(description = "采购商id 见表（basic_vendor.id）", requiredMode = Schema.RequiredMode.REQUIRED, example = "25808")
    private Long purchaseId;

    @Schema(description = "采购商", example = "阿里")
    @ExcelProperty("采购商")
    private String purchaseName;

    @Schema(description = "预订员id 见表（system_users.id）", requiredMode = Schema.RequiredMode.REQUIRED, example = "25808")
    private Long bookUserId;

    @Schema(description = "预订员", example = "阿里")
    @ExcelProperty("预订员")
    private String bookUserNickname;

    @Schema(description = "预订部门id 见表（system_dept.id）", requiredMode = Schema.RequiredMode.REQUIRED, example = "28942")
    private Long bookDeptId;

    @Schema(description = "预订部门", example = "阿里")
    @ExcelProperty("预订部门")
    private String bookDeptName;

    @Schema(description = "预订时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("预订时间")
    private LocalDateTime bookTime;

    @Schema(description = "报价操作员id 见表（system_users.id）", example = "23976")
    private Long quoteUserId;

    @Schema(description = "报价操作员", example = "阿里")
    @ExcelProperty("报价操作员")
    private String quoteUserNickname;

    @Schema(description = "报价部门id 见表（system_dept.id）", example = "14148")
    private Long quoteDeptId;

    @Schema(description = "报价部门", example = "阿里")
    @ExcelProperty("报价部门")
    private String quoteDeptName;

    @Schema(description = "报价时间")
    @ExcelProperty("报价时间")
    private LocalDateTime quoteTime;

    @Schema(description = "核价操作员id 见表（system_users.id）", example = "23976")
    private Long pricingUserId;

    @Schema(description = "核价操作员", example = "阿里")
    @ExcelProperty("核价操作员")
    private String pricingUserNickname;

    @Schema(description = "核价部门id 见表（system_dept.id）", example = "14148")
    private Long pricingDeptId;

    @Schema(description = "核价部门", example = "阿里")
    @ExcelProperty("核价部门")
    private String pricingDeptName;

    @Schema(description = "核价时间")
    @ExcelProperty("核价时间")
    private LocalDateTime pricingTime;

    @Schema(description = "取消规则id 见表（train_cancel_rule.id）", example = "6244")
    private Long cancelRuleId;

    @Schema(description = "取消操作员id 见表（system_users.id）", example = "15336")
    private Long cancelUserId;

    @Schema(description = "取消操作员", example = "阿里")
    @ExcelProperty("取消操作员")
    private String cancelUserNickname;

    @Schema(description = "取消部门id 见表（system_dept.id）", example = "26451")
    private Long cancelDeptId;

    @Schema(description = "取消部门", example = "阿里")
    @ExcelProperty("取消部门")
    private String cancelDeptName;

    @Schema(description = "取消时间")
    @ExcelProperty("取消时间")
    private LocalDateTime cancelTime;

    @Schema(description = "取消原因")
    @ExcelProperty("取消原因")
    private String cancelCause;

    @Schema(description = "备注", example = "随便")
    @ExcelProperty("备注")
    private String remark;

    @Schema(description = "状态 字典（air_demand_route_status）", example = "2")
    @ExcelProperty(value = "状态", converter = DictConvert.class)
    @DictFormat("air_demand_route_status")
    private Integer status;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    @Schema(description = "创建人")
    private String creator;

    @Schema(description = "行程航段列表", requiredMode = Schema.RequiredMode.REQUIRED)
    private List<AirDemandRouteSegmentRespVO> demandRouteSegments;

    @Schema(description = "价格列表", requiredMode = Schema.RequiredMode.REQUIRED)
    private List<AirDemandPriceRespVO> demandPrices;
}
